/**
 * 格式化时间
 */
export function formatTime(date: Date | number | string | undefined): string {
  if (!date) {
    return '未知';
  }
  if (typeof date === 'string') {
    date = new Date(date);
  } else if (typeof date === 'number') {
    date = new Date(date);
  }
  const now = new Date();
  const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);
  if (diffInSeconds < 0) {
    if (diffInSeconds > -60) {
      return '很快';
    } else if (diffInSeconds > -3600) {
      return `${Math.floor(-diffInSeconds / 60)}分钟后`;
    } else if (diffInSeconds > -86_400) {
      return `${Math.floor(-diffInSeconds / 3600)}小时后`;
    } else {
      return `${Math.floor(-diffInSeconds / 86_400)}天后(${date.toLocaleDateString()} ${date.toLocaleTimeString()})`;
    }
  }
  if (diffInSeconds < 60) {
    return '刚刚';
  } else if (diffInSeconds < 3600) {
    return `${Math.floor(diffInSeconds / 60)}分钟前`;
  } else if (diffInSeconds < 86_400) {
    return `${Math.floor(diffInSeconds / 3600)}小时前`;
  } else {
    return `${Math.floor(diffInSeconds / 86_400)}天前`;
  }
}
